For many years, there was little in the way of automated "configuration management" in relation to computer software development. As the early software "systems" were developed, documentation and control of the "current version" was most often accomplished as a de-facto manual configuration management. A system was built, tested, the components revised and the system rebuilt. Finally, the system was installed and any future changes were made by way of "patches" to the software system.
More recently, Computer-Aided Software Engineering (CASE) environments have become helpful for complex software projects, just as Computer-Aided Design (CAD) systems have become helpful for complex hardware projects. A few well known CASE systems is include: UNIX/PWB,designed to run on AT&Ts UNIX programming environment, includes the SCCS source code control system and the MAKE configuration tool; RCS, a source code control system that also runs on UNIX systems; CMS and MMS, the Digital Equipment Corp. VAX/VMS equivalent to SCCS and MAKE; ALS, the Ada Language System; and Cedar, running on the Xerox PARC Computer Science Laboratory system.
While prior art CASE systems as described above have offered an improvement in the ability to keep track of various configurations of software systems as they are built and modified, the have limitations. One drawback is the lack of "transparency" and "concurrency" to users in the area of configuration management. For instance, the Master program source codes (i.e., the basic or first versions of the programs) are typically maintained in a Master Table and changes by version are maintained in a Versions Table. The various possible versions of a program (or system comprising multiple programs) are not transparently available to users. Thus, to build a given configuration of a system, a System Builder cannot directly access the versions of the programs to be used in the system build. Rather, control must first be given to a Version Maker which then accesses the Master Table to obtain the master program source(s) and then gets and applies the appropriate version changes from the Version Table. The modified program reflecting a designated version is then stored in a holding area. Finally, control is transferred to a System Builder, which get its input from the holding area, from which it "builds" the desired system in a build area. Moreover, unless multiple holding areas and attendant complex procedures for their use are provided, there is a lack of concurrency in that only one version of the system can be built at any one time.
Another shortcoming of prior art CASE systems is the lack of capability to track and report progress on tasks or to monitor and notify of changes in areas critical to others.